package com.leinao.file.dao;


import com.leinao.file.model.BandWidth;
import com.leinao.project.model.PaiProjectJob;
import com.leinao.project.model.Project;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *
 * @Description 文件处理中心
 * @author lizi
 * @date 2018/10/16 上午10:48
 * @Version 1.0
 */
@Repository
public interface FileMapper {
	/**
	 * @Description 插入用户任务下载文件的带宽
	 * @param bandWidthBean : 参数
	 * @author sofa
	 * @date 2018/10/16 下午4:03
	 */
	void insertUserJobBandwidth(BandWidth bandWidthBean);

	/**
	 * @Description 插入用户下载文件的带宽
	 * @param bandWidthBean : 参数
	 * @author sofa
	 * @date 2018/10/16 下午4:03
	 */
	void insertUserDownBandWidth(BandWidth bandWidthBean);

	/**
	 * @Description 获取项目中所有代码路径和配置信息
	 * @author chenhewen
	 * @date 2019/5/16 下午5:10
	 */
	List<Project> getAllPublicConfigAndFilePathList();

	/**
	 * @Description 获取项目中所有代码路径和配置信息
	 * @author chenhewen
	 * @date 2019/5/16 下午5:10
	 */
	List<Project> getAllConfigAndFilePathList();

	/**
	 * @Description 更新项目的代码路径、配置信息和git仓库信息
	 * @param projectId 项目id
	 * @param config	项目模板配置
	 * @param filePath  代码所在位置路径
	 * @param gitRepository 代码仓库时间戳
	 * @param gitTimestamp 代码仓库
	 * @author chenhewen
	 * @date 2019/5/16 下午5:10
	 */
	void updateProjectConfigAndFilePathById(@Param("projectId") Long projectId
			,@Param("config") String config
			,@Param("filePath") String filePath
			,@Param("gitRepository") String gitRepository
			,@Param("gitTimestamp") String gitTimestamp);

	/**
	 * @Description 获取所有任务中的配置信息
	 * @author chenhewen
	 * @date 2019/5/17 下午6:30
	 */
	List<PaiProjectJob> getAllJobs();

	/**
	 * @Description 修改任务配置信息
	 * @param jobId 任务id
	 * @param config 任务配置信息
	 * @author chenhewen
	 * @date 2019/5/17 下午6:30
	 */
	void updateJobConfigById(@Param("jobId") Long jobId
			,@Param("config") String config);

	/**
	  * 功能描述：根据项目类型查询项目列表
	  * @param type 项目类型
	  * @param userId 用户id
	  * @return java.util.List<com.leinao.project.model.Project> 返回项目列表
	  * @Author: guoliangbo
	  * @Date: 2019/5/20 10:44
	  */
	List<Project> getProjectsByParams(@Param("type")Integer type,@Param("userId") String userId);

	/**
	  * 功能描述：更新项目tag
	  * @param projectId 项目id
	  * @param gitTag git版本
	  * @return java.lang.Integer 影响行数
	  * @Author: guoliangbo
	  * @Date: 2019/5/20 11:12
	  */
	Integer updateProjectTag(@Param("projectId")Long projectId,@Param("gitTag") String gitTag);

	/**
	  * 功能描述： 查询项目的最大编号
	  * @param projectId 项目id
	  * @return java.lang.Integer 返回编号
	  * @Author: guoliangbo
	  * @Date: 2019/5/20 13:13
	  */
    Integer getMaxCodeNo(@Param("projectId")Long projectId);

    /**
      * 功能描述：更新任务的gittag
      * @param projectId 任务名
      * @param gitTag gitTag
      * @return java.lang.Integer
      * @Author: guoliangbo
      * @Date: 2019/5/20 13:14
      */
    Integer updateProjectJobTag(@Param("projectId")Long projectId, @Param("gitTag")Integer gitTag);
}
